-- ************ Screen cleaning module version 1.0 created by Erwin van der Zwart ************** -- -- ******* This script perform automaticly all needed actions to support screen cleaning ******* -- -- After running script once refresh browser and write object to trigger the screen clean page -- -- ****************************************** SET PARAMETERS *********************************** -- --!!! Important !!! Set 1 pc/visu page to use as template to 'Show, make default', if no page is set to 'Show, make default' the script exits without creation of page !! --!!! Important !!! Works only on iOS/Android after enabling javascript) --Give a (not already excisting) name for the plan thats holds the screen clean page module (if already exist then script exit the creation) Screen_Clean_Page_Name = 'homeLYnk Screen Cleaning Module' -- Group address to trigger the screen cleaning page Screen_Clean_Trigger_Group_Address = '0/0/1' -- !! MUST BE A BIT OBJECT !! false = STOP AND BACK TO ORIGIN, true = ACTIVATE -- Set screen clean time (in seconds) Screen_Clean_Time = 60 -- Set translation for screen cleaning duration (user message) Cleaning_Message = 'You can clean the screen now' Cleaning_Time_Prefix = 'Within' Cleaning_Time_Suffix = 'seconds this screen will be closed' -- ****************************************** END PARAMETERS ************************************ -- -- ***************************** DON'T CHANGE ANYTHING UNDER THIS LINE ************************** -- -- Get default startpage query = 'SELECT id, building, layout, name, usermode_param, width, height FROM visfloors' for _, floor in ipairs(db:getall(query)) do if floor.usermode_param == "D" then default_startpage = floor.id screen_clean_page_building = floor.building screen_clean_width = floor.width screen_clean_height = floor.height end if floor.name == Screen_Clean_Page_Name then name_already_excist = true end end -- Check if default page excists else exit script if default_startpage == nil then alert("Default page does not excists, exit screen clean page creation") -- Disable script script.disable(_SCRIPTNAME) --Exit script return end -- Enable page adding Page_Adding = true -- Check alert page already excists else exit script if name_already_excist == true then alert("Screen clean page already excist or name is already used, only HTML will be rewritten") -- Disable page adding Page_Adding = false end -- Set sortorder to default sortorder value for counting highest_sortorder = 1 -- Get highest sortorder inside building part where default startpage is located query = 'SELECT sortorder FROM visfloors WHERE building == ' .. screen_clean_page_building .. ' ORDER BY sortorder DESC' for _, floor in ipairs(db:getall(query)) do if highest_sortorder <= floor.sortorder then highest_sortorder = floor.sortorder + 1 end end if Page_Adding == true then -- Create alert page if screen clean page doesn't exist db:insert('visfloors', {building = screen_clean_page_building, layout = 0, sortorder = highest_sortorder, name = Screen_Clean_Page_Name, bgrepeat = 0, bgfixed = 0, adminonly = 0, width = screen_clean_page_width, height = screen_clean_page_height,}) end -- Get page number of new created screen clean page screen_clean_page_number = db:getone('SELECT id FROM visfloors WHERE name=?', Screen_Clean_Page_Name) -- Check if screen clean time (in seconds) is at least 1 second if Screen_Clean_Time < 1 then Screen_Clean_Time = 1 end -- Create HTML content page = [[ homeLYnk Screen Clean Page
]] -- Create temp HTML file to write to controller file = io.open("scada/resources/img/screenclean.html", "w") -- Write HTML file to controller file:write(page) -- Close temp HTML file file:close() -- Check if HTML object already exist object_exists = false query = 'SELECT floor, type, name, params FROM visobjects' for _, visobject in ipairs(db:getall(query)) do if visobject.floor == screen_clean_page_number and (visobject.type == 9 or visobject.type == "9") and visobject.name == "screenclean" then object_exists = true end end if Page_Adding == true then -- Create html object on alertpage db:insert('visobjects', {floor = screen_clean_page_number, type = 9, params = '{"source":"url","url":"/scada/resources/img/screenclean.html","width":' .. screen_clean_width .. ',"height":' .. screen_clean_height .. '}', locx = 0 , locy = 0 , name = "screenclean", notouch = 1, nobg = 1,}) log ("Screen clean page is added") elseif object_exists == false then -- Create html object on excisiting alertpage db:insert('visobjects', {floor = screen_clean_page_number, type = 9, params = '{"source":"url","url":"/scada/resources/img/screenclean.html","width":' .. Alert_Frame_Width .. ',"height":' .. Alert_Frame_Height .. '}', locx = 0 , locy = 0 , name = "screenclean", notouch = 1, nobg = 1,}) log ("HTML is added to excisiting screen clean page") else log ("HTML on screen clean page is updated") end -- Disable script when done automaticly script.disable(_SCRIPTNAME)