|
myva v1.0 | |||||||
PREV NEXT | FRAMES NO FRAMES |
No overview generated for 'campaignManagement.js'
Method Summary | |
static Object
|
changeInputName(<Element> swap_root, <Array{Element}> row)
Korvaa kaikkien parametrina annetuilla riveillä olevien input-elementtien name-attribuutin arvoissa swap_root:n id-attribuutin esiintymät kohde-SwapRoot:n id-attribuutin esiintyminä. |
static Object
|
checkCampaignForm(form)
Tarkistaa kampanjan tietojen lomakkeen ennen sen lähetystä. |
static Object
|
displayClickedUsersTargets(clicked_element, <Event> e)
Näyttää klikatun käyttäjän kohdeasiakkaat. |
static Object
|
displayMovedUsersTargets(<Element> swap_root, <Array{Element}> row)
Tuo näkyviin (ensimmäisen valitun) siirretyn käyttäjän kohdeasiakkaat. |
static Object
|
displayUsersTargets(<Element> users_in_campaign_sr)
Tuo näytölle näkyviin valittuna olevan käyttäjän kohdeasiakkaat ja piilottaa mahdollisesti edellisen valittuna olleen käyttäjän kohdeasiakkaat. |
static Object
|
hasNotTargets(<Element> swap_root, <Array{Element}> row)
Tarkistaa, ettei siirrettävillä myyjillä ole asiakkaita. |
static void
|
newEmptyListField(<Element> currentField, <String> data_name, <int> num, <string> model, <string> field, <int> maxlen)
Luo uuden tyhjän input-elementin text_option_list -luokan elementtiin. |
static void
|
onloadAction()
Sivun latauduttua suoritettava funktio. |
static Object
|
setChangedUser(<Element> swap_root, <Array{Element}> row)
Asettaa kohdeasiakkaan tietoihin muuttuneen/poistuneen käyttäjän (myyjän). |
static void
|
textOptionListOnBlur(inputField, data_name)
Metodi, joka suoritetaan, kun kohdistus häviää TextOptionList:iin kuuluvasta input-elementistä. |
static Object
|
userRemovedFromCampaign(<Element> swap_root, <Array{Element}> row)
Tuo näkyviin ensimmäisen valitun käyttäjän kohdeasiakkaat, kun käyttäjä on poistettu kampanjasta. |
/** * Sivun latauduttua suoritettava funktio. * Alustaa SwapTable:t users_not_in_campaign ja users_in_campaign sekä "klikkaa" niiden ensimmäisiä rivejä. */ function onloadAction() { SwapTable.create('users_not_in_campaign', 'users_in_campaign', {orderBy:[1], visible:[false, true, true, true, true], afterSwap:[changeInputName, displayMovedUsersTargets]}); SwapTable.create('users_in_campaign', 'users_not_in_campaign', {orderBy:[1], visible:[false, true, false, false, false], afterClick:displayClickedUsersTargets, beforeSwap:hasNotTargets, afterSwap:[changeInputName, userRemovedFromCampaign]}); var rows = $('users_in_campaign').getElementsBySelector('tr'); if (rows.length > 0) { $('users_in_campaign').clickRow(rows[0]); } } /** * Tarkistaa kampanjan tietojen lomakkeen ennen sen lähetystä. * Toistaiseksi ainoastaan palauttaa true. * * @return true */ function checkCampaignForm(form) { return true; } /** * Luo uuden tyhjän input-elementin text_option_list -luokan elementtiin. * * @param {Element} currentField Elementti, jota aktivoitaessa tätä funktiota kutsutaan. * @param {String} data_name Kentän sisältämän datan nimi, esim. "myyntiargumentti" * @param {int} num Juokseva numero - 1. Juokseva numero on yksilöllinen jokaiselle input-kentälle * text_option_list:n sisällä. Jos currentField on viimeinen elementti, voi tähän antaa sen * numeron, sillä tämä funktio kasvattaa parametrina saamaansa arvoa yhdellä. * @param {string} model Cake:n model, johon input-kentän tieto kuuluu. * @param {string} field Caken:n model:n kenttä, johon input-kentän tieto tallennetaan. * @param {int} maxlen Input-kenttään kirjoitettavan tiedon maksimipituus. */ function newEmptyListField(currentField, data_name, num, model, field, maxlen) { if ($(currentField.parentNode).next() === undefined) { ++num; currentField.parentNode.parentNode.appendChild(Builder.node('div',{id:model + num}, [ Builder.node('input', { className:'new', type:'text', name:'data[' + model + '][' + num + '][' + model + '][' + field + ']', value:'', title:'Uusi ' + data_name, maxlength:maxlen, onfocus:'newEmptyListField(this, \'' + data_name + '\', ' + num + ', \'' + model + '\', \'' + field + '\', ' + maxlen + ');', onblur:'textOptionListOnBlur(this, \'' + data_name + '\');' }) ])); } } /** * Metodi, joka suoritetaan, kun kohdistus häviää TextOptionList:iin kuuluvasta input-elementistä. * Metodi tekee seuraavat toimenpiteet: * <ul> * <li>Asettaa input-kentän title-attribuutin arvoksi kentän sisällön. * <li>Poistaa mahdollisen ylimääräisen uudelle syötteelle tarkoitetun input-elementin. * <li>Jos input-elementin sisältö ei ole poistettavissa, varoittaa käyttäjää ja palauttaa alkuperäisen arvon. * </ul> */ function textOptionListOnBlur(inputField, data_name) { inputField = $(inputField); if (inputField.hasClassName('new') && isBlankString(inputField.value) && $(inputField.parentNode).next() !== undefined) { inputField.parentNode.remove(); } else if (inputField.hasClassName('not_deletable') && isBlankString(inputField.value)) { inputField.value = inputField.oldValue; alert(data_name.charAt(0).toUpperCase() + data_name.substr(1) + ' "' + inputField.value + '" on jo käytössä, eikä sitä voi poistaa.\nKentän sisältö palautettiin alkuperäiseksi.'); } else if (isBlankString(inputField.value)) { inputField.title = 'Poistettu ' + data_name; } else { inputField.title = inputField.value; } } /** * Korvaa kaikkien parametrina annetuilla riveillä olevien input-elementtien name-attribuutin arvoissa * swap_root:n id-attribuutin esiintymät kohde-SwapRoot:n id-attribuutin esiintyminä. * * @param {Element} swap_root SwapRoot-elementti, jonka id:n esiintymät korvataan sen kohteen id:llä. * @param {Array{Element}} row Taulukko tr-elementeistä, joiden input-elementtien name-attribuutit muutetaan. */ function changeInputName(swap_root, row) { for (var i = 0; i < row.length; ++i) { var input_elements = row[i].getElementsBySelector('input'); for (var j = 0; j < input_elements.length; ++j) { input_elements[j].name = input_elements[j].name.replace(swap_root.id, swap_root.swapTarget.id); } } return true; } /** * Tuo näytölle näkyviin valittuna olevan käyttäjän kohdeasiakkaat ja * piilottaa mahdollisesti edellisen valittuna olleen käyttäjän kohdeasiakkaat. * * @param {Element} users_in_campaign_sr SwapTable, joka pitää sisällään kampanjaan kuuluvat käyttäjät. */ function displayUsersTargets(users_in_campaign_sr) { var orphan_targets = $('orphan_targets'); if (orphan_targets.swapTarget !== null) { $(orphan_targets.swapTarget).hide(); } if (users_in_campaign_sr.selectedFirst != null) { var user_id = users_in_campaign_sr.selectedFirst.getElementsBySelector('.user_id'); if (user_id.length > 0) { user_id = SwapTable.getElementText(user_id[0]); } else { return true; } var users_targets = $('user_' + user_id + '_targets'); users_targets.show(); orphan_targets.swapTarget = users_targets; $('targetsFromUser').onclick = function() {users_targets.swapSelected() }; } else { orphan_targets.swapTarget = null; } return true; } /** * Tuo näkyviin (ensimmäisen valitun) siirretyn käyttäjän kohdeasiakkaat. * * @param {Element} swap_root SwapRoot, josta siirretään. @ @param {Array{Element}} row Siirrettävät rivit. */ function displayMovedUsersTargets(swap_root, row) { return displayUsersTargets(swap_root.swapTarget); } /** * Näyttää klikatun käyttäjän kohdeasiakkaat. * * @param {Element} swap_root SwapRoot, josta siirretään. @ @param {Event} e Klikkaustapahtuma. */ function displayClickedUsersTargets(clicked_element, e) { return displayUsersTargets(SwapTable.getSwapRoot(clicked_element)); } /** * Tuo näkyviin ensimmäisen valitun käyttäjän kohdeasiakkaat, kun käyttäjä on poistettu kampanjasta. * * @param {Element} swap_root SwapRoot, josta siirretään. * @param {Array{Element}} row Siirrettävät rivit. */ function userRemovedFromCampaign(swap_root, row) { return displayUsersTargets(swap_root); } /** * Asettaa kohdeasiakkaan tietoihin muuttuneen/poistuneen käyttäjän (myyjän). * Käytännössä luo kaksi input-kenttää "changed_user"-luokan td-elementtiin * parametrina annetulla rivillä, joista toinen sisältää target_client_id:n ja * toinen user_id:n. * * @param {Element} swap_root SwapRoot, josta siirretään. * @param {Array{Element}} row Siirrettävät rivit. */ function setChangedUser(swap_root, row) { for (var i = 0; i < row.length; ++i) { var changed_user_cell = row[i].getElementsBySelector('.changed_user'); if (changed_user_cell.length > 0) { changed_user_cell = changed_user_cell[0]; } else { return true; } var target_client_id = SwapTable.getTextBySelector(row[i], '.target_client_id'); if (target_client_id === null) { return true; } if (swap_root.swapTarget.id == 'orphan_targets') { var user_id = ''; } else { var user_id = swap_root.swapTarget.id.replace('user_', '').replace('_targets', ''); } // Jos elementtejä ei vielä ole, luodaan ne. // Muutosta tälle kohdeasiakkaalle ei siinä tapauksessa ole vielä tehty. var target_client_id_input = $('TargetClient' + target_client_id + 'TargetClientId'); if (target_client_id_input === null) { target_client_id_input = Builder.node('input', { className:'id', type:'hidden', name:'data[TargetClient][' + target_client_id + '][TargetClient][id]', value:target_client_id, id:'TargetClient' + target_client_id + 'TargetClientId' }); changed_user_cell.appendChild(target_client_id_input); } var user_id_input = $('TargetClient' + target_client_id + 'TargetClientUserId'); if (user_id_input === null) { user_id_input = Builder.node('input', { className:'id', type:'hidden', name:'data[TargetClient][' + target_client_id + '][TargetClient][user_id]', value:'', id:'TargetClient' + target_client_id + 'TargetClientUserId' }); changed_user_cell.appendChild(user_id_input); } // Asetetaan uusi user_id. user_id_input.value = user_id; } return true; } /** * Tarkistaa, ettei siirrettävillä myyjillä ole asiakkaita. * Myyjän asiakkaat ovat SwapTable-elementissä, jonka id on "user_USERID_targets", * missä USERID on käyttäjän tunniste. * * @param {Element} swap_root SwapRoot, josta siirretään. * @param {Array{Element}} row Siirrettävät rivit. * * @return true, jos myyjällä ei ole asiakkaita, muutoin false. */ function hasNotTargets(swap_root, row) { for (var i = 0; i < row.length; ++i) { var user_id = SwapTable.getTextBySelector(row[i], '.user_id'); var user_targets = $('user_' + user_id + '_targets').getElementsBySelector('tr'); if (user_targets.length > 0) { alert('Myyjällä ' + SwapTable.getTextBySelector(row[i], '.user_name') + ' on ' + user_targets.length + ' asiakasta.\nPoistaaksesi myyjän kampanjasta siirrä ensin myyjän asiakkaat pois myyjältä.'); return false; } } return true; }
|
myva v1.0 | |||||||
PREV NEXT | FRAMES NO FRAMES |